home *** CD-ROM | disk | FTP | other *** search
- /*
- * dfstruct.h
- *
- * Purpose:
- * --------
- * Ce fichier contient toutes les structures de donnes inter-
- * dpendantes utilises par STUT ONE (fentres+contenu etc.. )
- *
- * Notes:
- * ------
- * Diagramme de dpendances:
- *
- * dxf.h arbotree.h
- * | / \
- * DATABLOCK DEGASPIX DATA_RECORDS PAGEARBO ARBO_TEXTPAR
- * \_________\____ | ____/ /
- * \ | / /
- * {DATAUNION} /
- * | DIRSPEC
- * DATAPAGE / TEXTLINE
- * \ / /
- * DATADIR TEXTINFO FNCTSPEC
- * / \___ ___/ \
- * DATAGROUP \ / TEXT_DRAWPAR
- * FTA
- *
- *
- *
- * History:
- * --------
- * 25.11.93: Sortie des structures de gestion des fenêtres AES vers
- * le fichier gemwdef.h
- * 25.11.93: Sortie des structures de gestion des voies vers le
- * fichier serveur.h
- */
-
- /*
- * Vrifie si les prsentes dfinitions ont dja t faites:
- */
- #if !defined( _DFSTRUCT_H_ )
- #define _DFSTRUCT_H_
-
- /*
- * Headers indispensables:
- */
- #include <aes.h> /* header AES */
-
-
- /*
- * Custom Types:
- */
- #include "DXF.H"
- #include "ARBOTREE.H"
-
-
- /*
- * Icon-extended-(datagroup)type (stocked in flags) definitions:
- * Les DG_xxx sont les types utiliss dans le champ type des DATAGROUPS
- * et DATAPAGES.
- * ils sont repris sous forme de DTYP_xxx
- */
- typedef
- enum
- {
- STYP_NONE =0, /* pas de type */
- DTYP_ARBO,
- DTYP_PAGES,
- DTYP_DATAS,
- DTYP_TEXTS,
- DTYP_PICS,
- DTYP_UNKNOWN
- }
- DATATYPE;
-
- #define NB_DATAGROUPS 5 /* On va crer un emplacement pour 5 datagroups */
- #define RAMPATH_MAXLEN 107 /* Suffit pour 10 dossiers + 1 nom de fichier */
-
-
-
- /*
- * DEGASPIX: Image DEGAS Elite
- */
- typedef
- struct
- {
- unsigned int rez; /* Rsolution */
- unsigned int color[16]; /* Palette des 16 Couleurs */
- unsigned int bitmap[ 32000 / sizeof(unsigned int) ]; /* Bitmap */
- unsigned int rsvd[16]; /* Ce qu'il reste derrire */
- }
- DEGASPIX;
-
-
- /*
- * TEXTLINE: Ligne intégrée à un texte avec ptrs next/prev & info
- */
- typedef
- struct textline
- {
- struct textline *prev; /* Ptr sur Ligne prcdente */
- struct textline *next; /* Ptr sur Ligne suivante */
- struct
- {
- int bufsize : 15; /* Taille du buffer d'dition contenant cette ligne (\0 non compris) */
- int continued : 1;
- } info1;
- int length; /* Longueur de cette ligne (\0 non compris) */
- char *text; /* Pointeur sur le texte */
- }
- TEXTLINE;
-
-
- /*
- * TEXTINFO: Infos sur un texte
- *
- * Purpose:
- * --------
- * Fournit point d'accs vers la 1ere et dernire ligne au format
- * TEXTLINE d'un texte
- *
- * Notes:
- * ------
- *
- * Notes:
- * -----
- * En COURS:
- * Virer topline et le mettre dans une structure contenant aussi un
- * ptr sur le reste de TEXTINFO. Cette structure pourra alors etre
- * liee a WIPARAMS par l'intermediaire de WORK_DRAW (25.11.93)
- * Mme chose pour le curseur...
- *
- * History:
- * --------
- * 1993: fplanque: Created
- * 25.05.94: fplanque: Ajout de variables de gestion du curseur
- * 25.05.94: fplanque: Sorti toutes variables concernant l'affichage ds fenetre GEM vers TEXT_DRAWPAR
- */
- typedef
- struct
- {
- TEXTLINE * firstline; /* Ptr sur 1re ligne du texte affiché */
- TEXTLINE * lastline; /* Ptr sur dernire ligne du texte */
- long nb_lignes; /* Nombre total de lignes */
- }
- TEXTINFO;
-
-
- /*
- * TEXT_DRAWPAR: paramtres ncessaires
l'affichage d'un texte
- * dans une fentre.
- *
- * Purpose:
- * --------
- * Fournit toutes les informations pour l'affichage d'un texte
- * lorsque le texte est affich dans une fentre:
- * la ligne du haut de la fenetre, la fonte, couleur etc...
- * Position du curseur, etc...
- *
- * Notes:
- * ------
- * Du au pointeur *topline, le texte ne doit etre affiche que dans
- * une seule fenetre a la fois
- *
- * Suggest:
- * --------
- * Virer topline et le mettre dans une structure contenant aussi un
- * ptr sur le reste de TEXTINFO. Cette structure pourra alors etre
- * liee a WIPARAMS par l'intermediaire de WORK_DRAW (25.11.93)
- * Mme chose pour le curseur...
- *
- * History:
- * --------
- * 25.05.94: fplanque: Created
- */
- typedef
- struct
- {
- TEXTINFO * pTextInfo; /* ptr sur les infos sur le texte en RAM */
- TEXTLINE * pTextLine_top; /* Ptr sur 1re ligne affiche en haut de la fentre */
- long l_topline; /* No de la ligne en haut de la fenetre [0...] */
-
- int n_points; /* Taille en "points" */
- int n_char_h; /* Hauteur d'un caractre: */
- int n_cell_w; /* Largeur d'un emplacement caractre */
- int n_cell_h; /* Hauteur d'un emplacement caractre */
-
- /*
- * Pour textes non ditables seulement:
- */
- long l_nbLinesMax; /* Nbre de lignes
conserver en mmoire, les plus vieilles sont dtruites */
-
- /*
- * Edition:
- * Si le texte est Read Only, pTextLine_edit === NULL
- */
- TEXTLINE * pTextLine_edit; /* Ligne en cours d'dition; porte le curseur */
- long l_LigneCsr; /* No Ligne en cours d'dition */
- int n_ColCsr; /* Colonne ou se trouve le curseur [0...nb_cars] si nb_cars:apres dernier caractre */
- }
- TEXT_DRAWPAR;
-
-
- /*
- * DATABLOCK: Bloc de donnes
- *
- * History:
- * --------
- * 19.06.94: Created
- */
- typedef
- struct
- {
- char * p_block; /* Donnes */
- unsigned long ul_length; /* Longueur de ce bloc */
- }
- DATABLOCK;
-
- /*
- * DATAUNION: Ptr sur une entit de donnes
- *
- * History:
- * --------
- * 19.06.94: Vir le ptr texte direct
- */
- typedef
- union
- {
- PAGEARBO * pagearbo; /* Page arborescence (DTYP_ARBO) */
- DATABLOCK * dataBlock; /* Block de donnes brutes (DTYP_PAGES, DTYP_TEXTS ) */
- DATA_RECORDS * records; /* Enregistrements (DTYP_DATAS) */
- DEGASPIX * degaspix; /* Image Degas (DTYP_PICS) */
- void * x; /* Gnrique */
- }
- DATAUNION;
-
-
- /*
- * DATASTATE: Etat des donnes:
- *
- * 06.08.94: fplanque: Created
- */
- typedef
- struct
- {
- BOOL b_open : 1; /* != 0 si fentre ouverte dessus */
- unsigned int sstate : 2; /* indication de sauvegarde des donnes */
- }
- DATASTATE;
-
-
- /*
- * DATAPAGE: Page de donnes
- *
- * Purpose:
- * --------
- * Ajoute
une Entit de donnes, un nom, un commentaire etc...
- * et l'insre ds une liste chaine
- *
- * Suggest:
- * --------
- * Peut tre un sous type pour prciser le DATATYPE ?
- *
- * History:
- * --------
- * 11.07.94: fplanque: ajout du membre DATATYPE
- * 06.08.94: fplanque: remplace le int state par un DATASTATE
- * 15.12.94: ajout backptr vers le DATADIR auqeulest relie la DATAPAGE
- */
- typedef
- struct datapage
- {
- struct datapage * prev; /* Ptr sur Page prcdente */
- struct datapage * next; /* Ptr sur Page suivante */
- struct datadir * pDataDir; /* Ptr sur le Dir auquel appartient la page */
- DATATYPE DataType; /* Type de donnes */
- char nom[13]; /* Nom de cette page */
- DATAUNION data; /* Pointeur sur les donnes de la page */
- char *comment; /* Commentaire sur cette page (
titre informatif) */
- DATASTATE DataState; /* Status */
- }
- DATAPAGE;
-
-
- /*
- * DIRSPEC: Spcifications d'un directory d'arborescence
- *
- * Purpose:
- * --------
- * Fournit des informations complmentaires et spcifiques au type
- * de donnes gres sur un directory
- * pour l'arbo:
- * - nom du lien arbo servant de point d'entree dans le directory
- * - Autres rajouts le 14.02.95, pris dans DATADIR
- */
- typedef
- struct
- {
- KEYWORD_LIST * liens_in; /* Liste des nomd des liens-arbo */
- /* d'entre dans ce dir */
- unsigned max_objs; /* Nombre d'objets maximum avant modification taille zone objects */
- unsigned nb_objs; /* Nombre d'objets */
- unsigned max_iblks; /* Nombres d'ICONBLOCKs maxi */
- unsigned nb_iblks; /* Nombres d'ICONBLOCKs */
-
- unsigned * dir_map; /* Tableau reprsentatif */
- /* Format:
- * - Largeur
- * - Hauteur
- * - Elements...
- */
- }
- DIRSPEC;
-
-
- /*
- * DATADIR: Dossier de Pages de données
- *
- * Purpose:
- * --------
- * Regroupe plusieurs pages de données dans une sorte de dossier
- * en mémoire.
- *
- * Suggest:
- * --------
- * Pour viter la redondance de ptrs sur le DATAGROUP, on pourait faire
- * en sorte que le ROOT pointe sur le DATAGROUP (son "pre") et on
- * ferait la diffrence datadir/datagroup grâce au fait que le pre
- * du DATAGROUp serait NULL (crer une UNION datadir/datagroup/generic
- *
- * 15.07.94: Ajout de ptrs sur DATADIR parent et DATAGROUP
- * 07.08.94: fplanque: remplace le int state par un DATASTATE
- */
- typedef
- struct datadir
- {
- /*
- * Le ptr sur datagroup fut enlev
- * puis remis le 15.07.94
- */
- struct datadir * pDataDir_parent; /* Directory parent */
- struct datagroup * pDataGroup; /* Groupe de donnes */
-
- ICONBLK * iconblks; /* Pointe sur le tableau d'iconblk */
-
- unsigned nb_elts; /* Nombre d'lments DATAPAGE */
- DATAPAGE * data_start; /* Pointe sur premire page */
- DATAPAGE * data_end; /* Pointe sur dernire page */
-
- DIRSPEC * dir_spec; /* Spcifications complmentaires */
-
- /* Ces variables ont t transfres depuis le datagroup dans le datadir: */
- /* en plusieurs tapes jusqu'au 4 Mai 93 */
- DATASTATE DataState; /* Status. Note: Le bit OPEN n'est pas utilis puisk'on a carrment un compteur de fens ouvertes */
- int nb_dirs; /* Nb de fenetres DIRs ouvertes sur ces donnes */
- int nb_edits; /* Nb de donnes ouvertes en dition */
- }
- DATADIR;
-
-
- /*
- * DATAGROUP: Unit de donnes contenant tous les dossiers de ce type
- *
- * Purpose:
- * --------
- * Tous les dossiers contenant un certains types de données sont
- * relies
un ROOT.
- * La structure DATAGROUP donne un point d'accs
ce ROOT.
- * Le datagroup correspond gnralement
un fichier sur disque.
- */
- typedef
- struct datagroup
- {
- int icon_no; /* Numro de l'icne associe */
- DATATYPE DataType; /* Type, ex: DTYP_ARBO */
- char data_device[5]; /* Nom de l'unit de stockage virtuelle */
- DATADIR *root_dir; /* Ptr sur Directory ppal */
- char filename[13]; /* Nom du fichier charg */
- char *filepath; /* Ptr sur Rpertoire de ce fichier */
- }
- DATAGROUP;
-
-
- /*
- * FTA: File Transfer Area (Woaw Genial!)
- *
- */
- typedef
- union
- {
- DATADIR * datadir; /* Ptr sur un dossier */
- DATADIR ** datadir_ptr; /* Adr d'un Ptr sur un dossier */
- DATAPAGE * pDataPage; /* Ptr sur DataPage */
- TEXTINFO * textinfo; /* Ptr sur infos texte */
- int param; /* Paramtre */
- }
- FTA;
-
-
- /*
- * Fin du test anti redfinition:
- */
- #endif
-